//
//  HomeTableViewController.swift
//  WeiboSwift
//
//  Created by Apple13 on 16/7/9.
//  Copyright © 2016年 yupeng. All rights reserved.
//

import UIKit
import SVProgressHUD

//重用标记
private let HomeTableViewCellIdentifier = "HomeTableViewCellIdentifier"

class HomeTableViewController: VistorTableController {

    //微博数据列表数组
    var statusList:[WBStatus]?
    
    //懒加载ViewModel对象
    private lazy var statusListViewModel:StatusListViewModel = StatusListViewModel()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

    
        if isLogin{//已经登录状态
            
            //加载微博
            
            setUpTableView()
            
            loadStatus()
            
        }else{//未登录状态
            vistorView?.updateVistorInfo(nil, imageName: nil)
        }
        
        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    
    
    
    
    
    private func setUpTableView(){
//        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: HomeTableViewCellIdentifier)
//‼️要注册自定义的cell
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeTableViewCellIdentifier)
        
        
        
        //  去掉分隔线
        tableView.separatorStyle = .None
        //  设置自动行高, 通过约束设置高度
        tableView.rowHeight = UITableViewAutomaticDimension
        //  预估行高越接近真实高度越好
        tableView.estimatedRowHeight = 200
        
        
        
    }
    
//MARK: - 加载微博数据
    private func loadStatus() {
        SVProgressHUD.show()
        
        statusListViewModel.loadStatus { (isSuccess) -> () in
            SVProgressHUD.dismiss()
            if isSuccess {
                self.tableView.reloadData()
            }
        }
    }
//            // 代码执行到此是正常的回调
//            //将获得的响应转成字典
//             guard let dict = response as? [String: AnyObject] else {
//                print("返回的微博模型字典不是正经的字典格式")
//                return
//            }
//            
//            //执行到此处字典格式正确
//            
//            //接下来判断字典内部内层的字典格式是否正确
//            guard let statusDictArray = dict["statuses"] as? [[String:AnyObject]] else{
//                
//                print("不是正确的字典格式")
//                return
//            }
//            
//            //遍历字典数组完成字典转模型
//            var tempArray = [WBStatus]()
//            for statuDict in statusDictArray{
//                
//                let status = WBStatus(dict:statuDict)
//                tempArray.append(status)
//                
//            }
//            //设置数据
//            self.statusList = tempArray
//            
//            //刷新数据
//            self.tableView.reloadData()
        
//             SVProgressHUD.dismiss()
            
    
    
    
    
    
    
    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
//        return statusList?.count ?? 0
        
//        print(statusListViewModel.statusList.count)
        return statusListViewModel.statusList.count
        
        
        
    }

    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
//        let random = arc4random_uniform(15)
        
//        print("random=" + "\(random)" )
        
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeTableViewCellIdentifier, forIndexPath: indexPath) as! StatusCell
        
//         let cell = tableView.dequeueReusableCellWithIdentifier(HomeTableViewCellIdentifier, forIndexPath: indexPath)

//        cell.textLabel?.text = statusList![indexPath.row].text
        
        //取消选中效果
//         cell.selectionStyle = .None
        
        let statusViewModel = statusListViewModel.statusList[indexPath.row]
        
        cell.statusViewModel = statusViewModel

        return cell
    }
    

  
}
